import Vue from 'vue'
import App from './App.vue'
import router from './router'

// 引入elementui
import ElementUI from 'element-ui'
// 引入样式
import 'element-ui/lib/theme-chalk/index.css'

import axios from './utils/request.js'

// 导入组件
import MyBreadcrumb from './components/MyBreadcrumb.vue'
import MyChannel from './components/MyChannel.vue'
import MyCover from './components/MyCover.vue'

// 以vue插件的格式去安装ElementUI
Vue.use(ElementUI)
Vue.config.productionTip = false

// 注册全局组件的格式：
// Vue.component('组件名'，组件配置对象)
Vue.component('MyBreadcrumb', MyBreadcrumb)
Vue.component('MyChannel', MyChannel)
Vue.component('MyCover', MyCover)

// const str = '{ "id": 1253585734669959168, "age":30, "test": {"t": 1253585734669959168}}'
// // JSON  是JS自带的内置对象
// console.log(JSON.parse(str)) // 1253585734669959200

// // 它会把超出 JS 安全整数范围的数字转为一种类型为 BigNumber 的对象
// // JSONbig它有一个方法parse
// // 我们在使用的时候需要把这个 BigNumber.toString() 就能得到原来正确的数据了
// const obj = JSONbig.parse(str)
// console.log(obj)
// console.log(obj.id)
// console.log(obj.id.toString())

// 给Vue的原型对象上添加一个属性abc，则所有通过这个构造器创建出来的对象，都能直接访问abc属性
// - Vue实例
// - 组件。组件并不是由Vue直接生成的，但是，组件是从Vue.prototype派生的。理解：组件继承了Vue的属性和方法
// Vue.prototype.abc = 100

// 把自己封装过的axios挂在vue的原型对象上， 这样在所有的vue组件中，都可以通过
// this.$axios来访问
//   - $axios:这个名字可以是任意的，但是一般会加上$，表示这个属性是从原型链上的，不是组件自己的
Vue.prototype.$axios = axios

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
// 技巧： 允许eslint临时开个后门，让我们来访问__proto__
// 下面一句代码，不受eslint控制
// eslint-disable-next-line
// console.log(vm.abc,vm.__proto__.abc, vm.__proto__ === Vue.prototype)
